package xjay.ai.emotionalsupport.agent;

/**
 * 实现推理、执行、记录观察执行结果的情况
 */
public abstract class ReActAgent extends BaseAgent{

    /**
     * 推理
     * @return 是否工具调用：act
     */
    public abstract Boolean reasoning();

    /**
     * 工具调用
     */
    public abstract void act();

    /**
     *
     * @return 是否继续循环
     */
    public abstract String observe();

    @Override
    public String step() {
        //推理结果
        Boolean doAct = reasoning();
        if (!doAct) {
            super.setStatus(AgentStatus.FINISHED);
            return "思考完成，无需行动";

        }
        //行动
        act();

        //返回观察结果
        return observe();
    }
}
